#ifndef __STDMYSTRING_H_
#define __STDMYSTRING_H_
#include <iostream>

class MyStringList;

class StdMyString
{
private:
    char *s;
    int size;       //长度
    int capacity;   //容量

public:
    StdMyString();
    ~StdMyString();

    StdMyString(const char *str);
    StdMyString(const StdMyString& str);

    StdMyString operator+(const StdMyString& str);
    StdMyString operator+(const char* str);

    StdMyString operator-(const StdMyString& str);
    StdMyString operator-(const char* str);

    // void operator=(const StdMyString& str);
    StdMyString& operator=(const StdMyString& str);

    StdMyString& operator+=(const StdMyString& str);
    StdMyString& operator+=(const char c);

    char& operator[](int index);//访问并且修改

    operator int();
    operator double();


    bool operator==(const StdMyString& str);
    bool operator!=(const StdMyString& str);
    bool operator>(const StdMyString& str);

    MyStringList split(const StdMyString& str);
    friend std::ostream& operator<<(std::ostream& os, const StdMyString & str);//friend：str.s是私有成员变量
    friend std::istream& operator>>(std::istream& is, StdMyString & str);

};

class MyStringList
{
private:
    StdMyString *string;
    int size;       //长度
    int capacity;   //容量
public:

    MyStringList();
    ~MyStringList();

    void RemoveByIndex(int index);
    MyStringList& operator+=(const StdMyString& str);
    MyStringList& operator-=(const StdMyString& str);
    StdMyString& operator[](int index);

    
    friend std::ostream& operator<<(std::ostream& os, const MyStringList & list);
};



#endif